package com.cleaningcloud.erp.service.impl;

import java.util.List;

import com.cleaningcloud.common.core.utils.DateUtils;
import com.cleaningcloud.common.security.utils.CommunityTypeUtils;
import com.cleaningcloud.common.security.utils.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.cleaningcloud.erp.mapper.ErpCommodityTypeMapper;
import com.cleaningcloud.erp.domain.ErpCommodityType;
import com.cleaningcloud.erp.service.IErpCommodityTypeService;

import javax.annotation.PostConstruct;

/**
 * 商品类型管理Service业务层处理
 * 
 * @author cleaningcloud
 * @date 2024-09-26
 */
@Service
public class ErpCommodityTypeServiceImpl implements IErpCommodityTypeService 
{
    @Autowired
    private ErpCommodityTypeMapper erpCommodityTypeMapper;


    /**
     * 项目启动时，初始化字典到缓存
     */
    @PostConstruct
    public void init()
    {
        loadingCommodityTypeCache();
    }

    /**
     * 查询商品类型管理
     * 
     * @param commodityTypeId 商品类型管理主键
     * @return 商品类型管理
     */
    @Override
    public ErpCommodityType selectErpCommodityTypeByCommodityTypeId(Long commodityTypeId)
    {
        return erpCommodityTypeMapper.selectErpCommodityTypeByCommodityTypeId(commodityTypeId);
    }

    /**
     * 查询商品类型管理列表
     * 
     * @param erpCommodityType 商品类型管理
     * @return 商品类型管理
     */
    @Override
    public List<ErpCommodityType> selectErpCommodityTypeList(ErpCommodityType erpCommodityType)
    {
        return erpCommodityTypeMapper.selectErpCommodityTypeList(erpCommodityType);
    }

    /**
     * 新增商品类型管理
     * 
     * @param erpCommodityType 商品类型管理
     * @return 结果
     */
    @Override
    public int insertErpCommodityType(ErpCommodityType erpCommodityType)
    {
        erpCommodityType.setCreateTime(DateUtils.getNowDate());
        erpCommodityType.setCreateId(SecurityUtils.getUserId());
        erpCommodityType.setCreateName(SecurityUtils.getUsername());
        erpCommodityType.setFlag("Y");
        int row = erpCommodityTypeMapper.insertErpCommodityType(erpCommodityType);
        loadingCommodityTypeCache();
        return row;
    }

    /**
     * 修改商品类型管理
     * 
     * @param erpCommodityType 商品类型管理
     * @return 结果
     */
    @Override
    public int updateErpCommodityType(ErpCommodityType erpCommodityType)
    {
        int row = erpCommodityTypeMapper.updateErpCommodityType(erpCommodityType);
        loadingCommodityTypeCache();
        return row;
    }

    /**
     * 批量删除商品类型管理
     * 
     * @param commodityTypeIds 需要删除的商品类型管理主键
     * @return 结果
     */
    @Override
    public int deleteErpCommodityTypeByCommodityTypeIds(Long[] commodityTypeIds)
    {
        return erpCommodityTypeMapper.deleteErpCommodityTypeByCommodityTypeIds(commodityTypeIds);
    }

    /**
     * 删除商品类型管理信息
     * 
     * @param commodityTypeId 商品类型管理主键
     * @return 结果
     */
    @Override
    public int deleteErpCommodityTypeByCommodityTypeId(Long commodityTypeId)
    {
        return erpCommodityTypeMapper.deleteErpCommodityTypeByCommodityTypeId(commodityTypeId);
    }

    /**
     * @Author Shaw
     * @Description 设置字典缓存
     * @date: 2025-08-12 19:22
     * @param: //TODO
     */
    @Override
    public void loadingCommodityTypeCache() {
        ErpCommodityType erpCommodityType = new ErpCommodityType();
        erpCommodityType.setFlag("Y");
        List<ErpCommodityType> list = erpCommodityTypeMapper.selectErpCommodityTypeList(erpCommodityType);
        for (ErpCommodityType obj : list)
        {
            CommunityTypeUtils.setCommunityTypeCache(String.valueOf(obj.getCommodityTypeId()), obj.getCommodityTypeName());
        }
    }

    /**
     * @Author Shaw
     * @Description 供三才环科商城(小程序)展示
     * @date: 2025-04-02 14:31
     * @param: //TODO
     */
    @Override
    public List<ErpCommodityType> selectMallErpCommodityTypeList(ErpCommodityType erpCommodityType){
        return erpCommodityTypeMapper.selectMallErpCommodityTypeList(erpCommodityType);
    };
}
